<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
  <title>Filtre AviSynth GeneralConvolution</title>


  <link rel="stylesheet" type="text/css" href="../../avisynth.css">

</head>


<body>

<h2><a name="Convolution"></a>GeneralConvolution</h2>

<p><code>GeneralConvolution </code>(<var>clip,
int "bias", string "matrix", float "divisor", bool "auto"</var>)
</p>

<p>Ce filtre applique une convolution avec une matrice.
</p>

<table style="width: 75%;" border="1">

  <tbody>

    <tr>

      <td style="width: 38%;"><var>clip</var> </td>

      <td width="66%">clip RGB32</td>

    </tr>

    <tr>

      <td width="34%"><var>bias</var> (par
d&eacute;faut &agrave; 0)</td>

      <td width="66%">param&egrave;tre
suppl&eacute;mentaire de d&eacute;calage pour ajuster
l'intensit&eacute; de la sortie</td>

    </tr>

    <tr>

      <td width="34%"><var>matrix</var>
(par d&eacute;faut &agrave; "0 0 0 0 1 0 0 0 0") </td>

      <td width="66%">une matrice 3x3 ou 5x5 avec 9 ou
25 nombres entiers compris entre -256 et 256</td>

    </tr>

    <tr>

      <td width="34%"> <var>divisor</var>
(par d&eacute;faut &agrave; 1.0)</td>

      <td width="66%">divise la sortie de la convolution
(calcul&eacute; avant d'ajouter le bias)</td>

    </tr>

    <tr>

      <td width="34%"><var>auto</var> (par
d&eacute;faut &agrave; true (vrai))</td>

      <td width="66%">Active la fonction
d'&eacute;chelle automatique. Cela divise le r&eacute;sultat
par la somme des &eacute;l&eacute;ments de la matrice. La
valeur de <var>divisor</var> en appliqu&eacute;e en
plus de ce facteur. Si la somme des &eacute;l&eacute;ments est
z&eacute;ro, ce&nbsp;param&egrave;tre est
d&eacute;activ&eacute;</td>

    </tr>

  </tbody>
</table>

<p>Le <var>divisor</var> (diviseur) est
habituellement la somme des &eacute;l&eacute;ments de la
matrice. Mais quand la somme est &eacute;gale &agrave; zero,
vous devez utiliser les param&egrave;tres <var>divisor</var>
et <var>bias</var>
pour corriger la valeur des pixels. Le param&egrave;tre <var>bias</var>
peut &ecirc;tre utile si la valeur des pixels est
n&eacute;gative apr&egrave;s la convolution. Apr&egrave;s
avoir appliqu&eacute; le bias, la valeur des pixels
n&eacute;gatifs est simplement ramen&eacute; &agrave;
z&eacute;ro (ou 255 si la valeur des pixel est
sup&eacute;rieure &agrave; 255).
</p>

<p>Sur les bord, les pixels du bord sont
r&eacute;p&eacute;t&eacute;s pour pouvoir effectuer la
convolution.
</p>

<p>Quelques exemples:
</p>

<pre># Flou:<br><br>GeneralConvolution(0, "<br> 10 10 10 10 10<br> 10 10 10 10 10 <br> 10 10 16 10 10 <br> 10 10 10 10 10 <br> 10 10 10 10 10 ", 256, False)<br></pre>

<pre># D&eacute;tection de contour horizontale (Sobel):<br><br>GeneralConvolution(128, "<br> 1 2 1 <br> 0 0 0 <br> -1 -2 -1 ", 8)</pre>

<pre># D&eacute;tection de contour verticale (Sobel):<br><br>GeneralConvolution(128, "<br> 1 0 -1 <br> 2 0 -2 <br> 1 0 -1 ", 8)</pre>

<pre># D&eacute;placement (d&eacute;place simplement de "1" pixel<br># du cot&eacute; ou le 1 est plac&eacute; dans la matrice (gauche, droite, haut et bas)<br><br>GeneralConvolution(0,"<br> 0 1 0 <br> 0 0 0 <br> 0 0 0 ")</pre>

<pre># D&eacute;placement d'un demi pixel (&eacute;chelle automatique):<br><br>GeneralConvolution(0,"<br> 0 1 0 <br> 0 1 0 <br> 0 0 0 ")</pre>

<pre># D&eacute;placement d'un demi pixel &agrave; droite (&eacute;chelle manuelle):<br><br>GeneralConvolution(0,"<br> 0 0 0 <br> 0 128 128 <br> 0 0 0 ", 256, False)</pre>

<pre># Filtre de nettet&eacute;:<br><br>GeneralConvolution(0,"<br> 0 -1 0 <br> -1 5 -1 <br> 0 -1 0 ", 1, True)<br><br>Dans ce cas, les nouvelles valeurs d'un pixel y(m,n) sont donn&eacute;es par:<br>y(m,n) = (-1*x(m-1,n) - 1*x(m,n-1) + 5*x(m,n) - 1*x(m,n+1)<br> - 1*x(m+1,n))/(-1-1+5-1-1)/1.0 + 0</pre>

<pre># L&eacute;ger filtre de flou avec une suppression des noirs et un &eacute;claircissement de 25%:<br><br>GeneralConvolution(-16,"<br> 0 12 0 <br> 12 256 12 <br> 0 12 0 ", 0.75 ,True)<br><br>Dans ce cas, les nouvelles valeurs d'un pixel y(m,n) sont donn&eacute;es par:<br>y(m,n) = ( 12*x(m-1,n) + 12*x(m,n-1) + 256*x(m,n) + 12*x(m,n+1)<br> + 12*x(m+1,n) )/(12+12+256+12+12)/0.75 - 16</pre>

<p>D'autres exemples peuvent &ecirc;tre trouv&eacute;s <a href="http://www.gamedev.net/reference/programming/features/imageproc/page2.asp"><cite>ici</cite></a>
(en anglais).</p>

<p><b>Changements:</b></p>

<table border="1">

  <tbody>

    <tr>

      <td>v2</td>

      <td>Version initiale</td>

    </tr>

    <tr>

      <td>v2.55</td>

      <td>Ajout des param&egrave;tres divisor et auto</td>

    </tr>

  </tbody>
</table>

<p><kbd>$English date: 2005/05/31 13:57:24 $<br>

French translation date: 2005/11/05 JasonFly <a href="mailto:macpaille@users.sourceforge.net">macpaille@users.sourceforge.net</a></kbd>
</p>

<form>
  <input value="Retour" onclick="history.go(-1)" type="button"></form>

</body>
</html>
